In complex events processing, events generally include virtually any occurrence which may directly or indirectly provide a user with desired information. For example, such events may include physical, real world events which are detected by one or more sensors. In the context of computers/networks, events may include virtually any operation which may be performed by or between one or more computers. In the business realm, events may include virtually any financial transaction or activity related thereto.
In these and many other contexts, the term event, by itself, generally prefers to a low-level event (and/or a message encapsulating relevant information about such an event(s)), which is often brief, discrete, unsinkhronized, and/or difficult or impossible to predict. In many cases, such events may occur relatively quickly and may be relatively voluminous within a given time period.
Using current technology, it is often technically straightforward to capture such individual events. Moreover, in many cases, the required hardware/software used to deploy sensors and other event detection components may be relatively inexpensive. As a result, it is possible to capture very large numbers of events within relatively short timeframes. However, such low-level events, by themselves, by definition, often do not individually provide sufficient and/or meaningful information required by a user. Further, even when such low-level events do provide desired information, the relatively large quantity of events may be difficult to represent, store, or transmit in electronic form. For example, attempting to capture and transmit a large number of events over a computer network to a remote computer used to analyze the events may result in overwhelming an available bandwidth of the network, or otherwise reaching or exceeding available computational resources.
For these and other reasons, complex event processing techniques have been developed in which combinations of individual events which occur in a certain order and/or within a certain time window are used to determine desired information. In this way, users may be provided with high-level information, relative to information that may be available with respect to any individual event. Moreover, by determining such high-level information from combinations of events, requirements for processing, storing, and/or transmitting such high-level events may be reduced relative to similar requirements for the underlying, individual events.
In order to deduce, infer, or otherwise determine high-level information from a combination of events within a particular timeframe, complex event processing techniques generally rely on complete, accurate, and timely transmission of events, e.g., within a computer network. For example, it may occur that one or more sensors may detect and transmit a plurality of events, and may transmit messages related to the events to a common location within the network, e.g., to a network computer which is configured to perform complex event processing with respect to the detected events. As referenced, such complex event processing may include the determination of desired information from, e.g., relationships between specified subsets of events within a defined period of time. Consequently, if some or all of the events are not received in a timely manner, and/or are received in an order which does not reflect an actual order of detection of the events, then the resulting complex event processing may produce erroneous results. For example, network delays, e.g., delays associated with a failure or other malfunction of one or more network computers responsible for transmitting the event, may cause a subset of events to be received out of order relative to one another and to an order of occurrence of the events. In these and related scenarios, many of the features and advantages of complex event processing may be mitigated or lost.